package service

import (
	"bytes"
	"encoding/json"
	"errors"
	"gitee.com/sdumeeting/sfu-server/global"
	"net/http"
)

// Connect 向会议管理中心发起服务注册请求
func Connect() error {
	// 创建请求体
	serviceInfo := make(map[string]interface{})
	serviceInfo["name"] = "sfu-service"
	serviceInfo["port"] = global.ServerSetting.Port
	serviceInfo["maxLoad"] = 10000

	// 将 map 转换成 json 格式的字符数组
	body, err := json.Marshal(serviceInfo)
	if err != nil {
		return err
	}

	// 创建 bytes.Reader，并将请求体字符数组传入
	// 该结构体实现了 io.Reader 接口，可作为 http.Post() 的第三个参数
	reader := bytes.NewReader(body)

	// 向中心服务器发送注册请求
	var res *http.Response
	res, err = http.Post("http://"+global.MeetingManager.Host+":"+global.MeetingManager.Port+
		global.MeetingManager.Path, "application/json;charset=utf-8", reader)
	if err != nil || res.StatusCode != http.StatusOK {
		return errors.New("fail to connect to the server")
	}

	return nil
}

type HeartbeatHandler struct{}

// 提供心跳检测接口
// 当会议管理中心发起请求的时候，返回确认信息
func (h *HeartbeatHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request) {
	w.WriteHeader(http.StatusOK)
}
